EC2 Apache 실습 - 패키지 매니저 vs Docker 비교 (Amazon Linux , Rocky Linux)
주의사항
- EC2 보안 그룹에서 80, 8080 포트 열기
- YOUR_EC2_PUBLIC_IP를 실제 EC2 퍼블릭 IP로 변경
1단계: 패키지 매니저를 통한 Apache 설치
#!/bin/bash
# Package manager Apache installation
echo "Starting Apache installation via package manager..."
sudo yum update -y
sudo yum install -y httpd
sudo systemctl start httpd
sudo systemctl enable httpd
echo "Apache installation complete!"
echo "Access URL: http://YOUR_EC2_PUBLIC_IP/"
2단계: 커스텀 index 페이지 만들기
#!/bin/bash
# Create custom index page
echo "<h1>Apache via Package Manager</h1>" | sudo tee /var/www/html/index.html
echo "<p>Port: 80</p>" | sudo tee -a /var/www/html/index.html
echo "Custom page created!"
3단계: Docker 설치
#!/bin/bash
# Docker installation
echo "Starting Docker installation..."
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -a -G docker ec2-user
echo "Docker installation complete!"
echo "Re-login required (or run: newgrp docker)"
4단계: Docker Apache 컨테이너 실행
#!/bin/bash
# Run Docker Apache container
echo "Starting Docker Apache container..."
docker run -d -p 8080:80 --name my-apache httpd:2.4
echo "Docker Apache started!"
echo "Access URL: http://YOUR_EC2_PUBLIC_IP:8080/"
5단계: Docker 컨테이너 커스텀 페이지 만들기
#!/bin/bash
# Create custom page for Docker container
echo "<h1>Apache via Docker</h1>" > index.html
echo "<p>Port: 8080</p>" >> index.html
docker cp index.html my-apache:/usr/local/apache2/htdocs/
rm index.html
echo "Docker custom page created!"
6단계: 컨테이너 내부 접근 (exec 사용)
#!/bin/bash
# Container access and useful commands
echo "Container access method:"
echo "docker exec -it my-apache /bin/bash"
echo ""
echo "Useful commands:"
echo "docker ps # Check running containers"
echo "docker logs my-apache # Check logs"
echo "docker stop my-apache # Stop container"
echo "docker start my-apache # Start container"
echo "docker restart my-apache # Restart container"
최종 확인
- Package Manager Apache: http://YOUR_EC2_PUBLIC_IP/ (Port 80)
- Docker Apache: http://YOUR_EC2_PUBLIC_IP:8080/ (Port 8080)
전체 정리 (실습 완료 후)
#!/bin/bash
# Complete cleanup - Apache and Docker
echo "Starting complete cleanup..."
# Stop and remove all Docker containers
docker stop $(docker ps -aq) 2>/dev/null
docker rm $(docker ps -aq) 2>/dev/null
docker rmi $(docker images -q) 2>/dev/null
docker system prune -af
# Remove Docker completely
sudo systemctl stop docker
sudo yum remove -y docker docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
# Remove Apache (httpd)
sudo systemctl stop httpd
sudo yum remove -y httpd
sudo rm -rf /var/www/html/*
echo "Complete cleanup finished!"
echo "System restored to original state."